// ==UserScript==
// @name         PowerChina Bid 悬浮菜单可拖动
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description  悬浮菜单支持拖动并自动停靠边缘（左或右）
// @author       linfeng
// @match        *://bid.powerchina.cn/*
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  // 创建浮动容器
  const menuBox = document.createElement('div');
  menuBox.style.position = 'fixed';
  menuBox.style.top = '100px';
  menuBox.style.right = '20px';
  menuBox.style.zIndex = '9999';
  menuBox.style.background = '#2b6cb0';
  menuBox.style.borderRadius = '8px';
  menuBox.style.color = 'white';
  menuBox.style.padding = '10px';
  menuBox.style.cursor = 'move';
  menuBox.style.fontSize = '14px';
  menuBox.style.transition = 'all 0.3s ease';
  menuBox.style.boxShadow = '0 0 8px rgba(0,0,0,0.3)';
  menuBox.innerText = '📂 操作面板';

  // 创建下拉菜单容器
  const menuItems = document.createElement('div');
  menuItems.style.display = 'none';
  menuItems.style.flexDirection = 'column';
  menuItems.style.marginTop = '10px';
  menuItems.style.backgroundColor = '#fff';
  menuItems.style.color = '#000';
  menuItems.style.borderRadius = '6px';
  menuItems.style.boxShadow = '0 2px 8px rgba(0,0,0,0.2)';
  menuItems.style.overflow = 'hidden';

  // 创建菜单项函数
  function createMenuItem(text, onClick) {
    const item = document.createElement('div');
    item.innerText = text;
    item.style.padding = '8px 12px';
    item.style.borderBottom = '1px solid #eee';
    item.style.cursor = 'pointer';
    item.addEventListener('mouseover', () => (item.style.background = '#f0f0f0'));
    item.addEventListener('mouseout', () => (item.style.background = '#fff'));
    item.addEventListener('click', () => {
      onClick();
      menuItems.style.display = 'none';
    });
    return item;
  }

    // === 定义功能函数 项目创建功能 ===
    function createProject() {
        console.log('✅ 正在执行 createMenu 函数...');
        // TODO: 你可以在这里添加页面跳转、填表、注入按钮等逻辑
        // 页面跳转到创建项目：https://bid.powerchina.cn/bidweb/#/projectMgt/buildingProjectList
        // 点击新建项目跳转url:https://bid.powerchina.cn/bidweb/#/projectMgt/buildingProjectAdd?operateType=add&backPath=/projectMgt/buildingProjectList
        console.log('✅ 正在执行 createMenu 函数...');

        // 第一步：跳转到列表页面
        location.hash = '#/projectMgt/buildingProjectList';

        // 第二步：等待“新建项目”按钮出现并点击
        const tryClickNewButton = setInterval(() => {
            // 查找按钮（你可以根据按钮的文本或 class 修改选择器）
            const newBtn = Array.from(document.querySelectorAll('button'))
            .find(btn => btn.innerText.includes('创建项目'));

            if (newBtn) {
                console.log('✅ 找到“新建项目”按钮，正在点击...');
                newBtn.click();
                clearInterval(tryClickNewButton);
            }
        }, 500);
        //第三步 操作面板加一个导入选项显示（显性显示）
        menuItems.appendChild(createMenuItem('📥 导入选项', () => {
            console.log('📥 点击了导入选项，尝试操作页面上的导入区域');
        }));

    }

    // 计划创建
    function createPlan() {
        console.log('✅ 正在执行 createPlan 函数...');
        // TODO: 你可以执行跳转到 #/projectMgt/buildingProjectAdd
        alert('你调用了 createPlan() 函数');
    }

    // === 添加菜单项 ===
    menuItems.appendChild(createMenuItem('📋 创建菜单选项', () => {
        createProject(); // 调用函数
    }));

    menuItems.appendChild(createMenuItem('📅 创建计划选项', () => {
        createPlan(); // 调用函数
    }));

  menuBox.appendChild(menuItems);
  document.body.appendChild(menuBox);

  // 悬浮展开菜单
  menuBox.addEventListener('mouseenter', () => {
    menuItems.style.display = 'flex';
  });
  menuBox.addEventListener('mouseleave', () => {
    menuItems.style.display = 'none';
  });

  // === 拖动逻辑 ===
  let isDragging = false;
  let offsetX, offsetY;

  menuBox.addEventListener('mousedown', (e) => {
    isDragging = true;
    offsetX = e.clientX - menuBox.getBoundingClientRect().left;
    offsetY = e.clientY - menuBox.getBoundingClientRect().top;
    document.body.style.userSelect = 'none';
  });

  document.addEventListener('mousemove', (e) => {
    if (!isDragging) return;
    menuBox.style.left = (e.clientX - offsetX) + 'px';
    menuBox.style.top = (e.clientY - offsetY) + 'px';
    menuBox.style.right = 'auto'; // 拖动时取消固定右侧
  });

  document.addEventListener('mouseup', () => {
    if (!isDragging) return;
    isDragging = false;
    document.body.style.userSelect = 'auto';

    const windowWidth = window.innerWidth;
    const boxRect = menuBox.getBoundingClientRect();
    const middle = windowWidth / 2;

    if (boxRect.left < middle) {
      // 靠左吸附
      menuBox.style.left = '20px';
      menuBox.style.right = 'auto';
    } else {
      // 靠右吸附
      menuBox.style.left = 'auto';
      menuBox.style.right = '20px';
    }
  });
})();
